Fixed flaky WebXR outputContext test Promise test wasn't actually returning a promise, so the actual test logic was frequently being skipped by the test runners. Bug: 951553 Change-Id: I3b036b5b2dbb4edc347d2a94fe507b25681db4cb Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1565248 Auto-Submit: Brandon Jones <bajones@chromium.org> Reviewed-by: Brian Sheedy <bsheedy@chromium.org> Commit-Queue: Brandon Jones <bajones@chromium.org> Cr-Commit-Position: refs/heads/master@{#651034} 
diff --git a/webxr/xrSession_transfer_outputContext.https.html b/webxr/xrSession_transfer_outputContext.https.html index 69c52d2..658cb32 100644 --- a/webxr/xrSession_transfer_outputContext.https.html +++ b/webxr/xrSession_transfer_outputContext.https.html 
@@ -3,40 +3,53 @@  <script src=/resources/testharness.js></script>  <script src=/resources/testharnessreport.js></script>  <script src="resources/webxr_util.js"></script> + <canvas></canvas>  <script>  xr_promise_test(  "Ensure that XRPresentationContexts are properly transfered between session",  (t) => {  return XRTest.simulateDeviceConnection({ supportsImmersive:false })  .then( (controller) => { - Promise.all([ + return Promise.all([  navigator.xr.requestSession({ mode: 'inline'}),  navigator.xr.requestSession({ mode: 'inline'})  ]).then((sessions) => { - assert_not_equals(sessions[0], null); - assert_not_equals(sessions[1], null); + t.step(() => { + assert_not_equals(sessions[0], null); + assert_not_equals(sessions[1], null); + });   + const webglCanvas = document.getElementsByTagName('canvas')[0]; + let gl = webglCanvas.getContext('webgl', {xrCompatible: true});  let outputContext = getOutputContext();    sessions[0].updateRenderState({ - baseLayer: new XRWebGLLayer(session, gl), + baseLayer: new XRWebGLLayer(sessions[0], gl),  outputContext: outputContext  });   - sessions[0].requestAnimationFrame((time, xrFrame) => { - sessions[1].updateRenderState({ - baseLayer: new XRWebGLLayer(session, gl), - outputContext: outputContext - }); + return new Promise((resolve, reject) => { + sessions[0].requestAnimationFrame((time, xrFrame) => { + sessions[1].updateRenderState({ + baseLayer: new XRWebGLLayer(sessions[1], gl), + outputContext: outputContext + });   - // outputContext reassignment should not happen until the next frame is processed. - assert_equals(sessions[0].renderState.outputContext, outputContext); - assert_equals(sessions[1].renderState.outputContext, null); + t.step(() => { + // outputContext reassignment should not happen until the next frame is processed. + assert_equals(sessions[0].renderState.outputContext, outputContext); + assert_equals(sessions[1].renderState.outputContext, null); + });   - sessions[1].requestAnimationFrame((time, xrFrame) => { - // Ensure the outputContext was properly reassigned from one context to the other. - assert_equals(sessions[0].renderState.outputContext, null); - assert_equals(sessions[1].renderState.outputContext, outputContext); + sessions[1].requestAnimationFrame((time, xrFrame) => { + t.step(() => { + // Ensure the outputContext was properly reassigned from one context to the other. + assert_equals(sessions[0].renderState.outputContext, null); + assert_equals(sessions[1].renderState.outputContext, outputContext); + }); + + resolve(); + });  });  });  });